gtktextview: Remove child textview items last
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 24 Jun 2020 18:19:03 +0000 (20:19 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 24 Jun 2020 18:35:23 +0000 (20:35 +0200)
The function tries to go through every child, so it's convenient
to remove all internal ones first.

gtk/gtktextview.c

index 65385e524633ccfe626a2af505b99cf94181b594..39cba8941377dd16cf959a8cf8b85e78abaff506 100644 (file)
@@ -3773,9 +3773,6 @@ gtk_text_view_dispose (GObject *object)
       g_object_set_data (object, "gtk-emoji-chooser", NULL);
     }
 
-  while ((child = gtk_widget_get_first_child (GTK_WIDGET (text_view))))
-    gtk_text_view_remove (text_view, child);
-
   gtk_text_view_remove_validate_idles (text_view);
   gtk_text_view_set_buffer (text_view, NULL);
   gtk_text_view_destroy_layout (text_view);
@@ -3801,6 +3798,9 @@ gtk_text_view_dispose (GObject *object)
   g_clear_pointer (&priv->selection_bubble, gtk_widget_unparent);
   g_clear_pointer (&priv->magnifier_popover, gtk_widget_unparent);
 
+  while ((child = gtk_widget_get_first_child (GTK_WIDGET (text_view))))
+    gtk_text_view_remove (text_view, child);
+
   G_OBJECT_CLASS (gtk_text_view_parent_class)->dispose (object);
 }